#include "BaseRenderer.h"
#include <SERender/Renderer/Renderer.h>
#include <SEngine/Render/RenderFeature/FrameRenderFeature.h>
#include <SEngine/Render/RenderFeature/UBORenderFeature.h>
#include <SEngine/Render/RenderFeature/ModelRenderFeature.h>
#include <SEngine/Render/RenderFeature/SkyBoxRenderFeature.h>
#include <SEngine/Render/RenderFeature/UtilRenderFeature.h>
#include <SEngine/Render/RenderFeature/TextRenderFeature.h>

namespace SEngine
{    
    BaseRenderer::BaseRenderer(std::unique_ptr<IDrive>&& drive)
        : Renderer(std::move(drive)) 
    {
        this->Descriptor<RenderFeature>::AddDescriptor(std::make_unique<FrameRenderFeature>(*this));
        this->Descriptor<RenderFeature>::AddDescriptor(std::make_unique<UBORenderFeature>(*this));
        this->Descriptor<RenderFeature>::AddDescriptor(std::make_unique<ModelRenderFeature>(*this));
        this->Descriptor<RenderFeature>::AddDescriptor(std::make_unique<SkyBoxRenderFeature>(*this));
        this->Descriptor<RenderFeature>::AddDescriptor(std::make_unique<UtilRenderFeature>(*this));
        this->Descriptor<RenderFeature>::AddDescriptor(std::make_unique<TextRenderFeature>(*this));
    }
} // namespace SEngine


